package com.ruoyi.project.module.products.service;

import com.ruoyi.project.common.domain.ErrorCommon;
import com.ruoyi.project.module.products.domain.Products;
import com.ruoyi.project.module.productsUpload.domain.ProductsUpload;
import java.util.List;

/**
 * 商品以及库存 服务层
 * 
 * @author lcx
 * @date 2018-08-15
 */
public interface IProductsService 
{
	/**
     * 查询商品以及库存信息
     * 
     * @param id 商品以及库存ID
     * @return 商品以及库存信息
     */
	public Products selectProductsById(String id);
	
	/**
     * 查询商品以及库存列表
     * 
     * @param products 商品以及库存信息
     * @return 商品以及库存集合
     */
	public List<Products> selectProductsList(Products products);
	
	/**
     * 新增商品以及库存
     * 
     * @param products 商品以及库存信息
     * @return 结果
     */
	public int insertProducts(Products products);
	
	/**
     * 修改商品以及库存
     * 
     * @param products 商品以及库存信息
     * @return 结果
     */
	public int updateProducts(Products products);
		
	/**
     * 删除商品以及库存信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteProductsByIds(String ids);

	/**
	 * @Author lcx
	 * @Date 2018/8/25 9:47
	 * 批量上传商品信息
	 *@param phList 文件路径集合
	 *@param phList 根路径
	 */
	List<ErrorCommon> uploadProduct(List<ProductsUpload> phList, String download, String bz);

	/**
	 * @Author lcx
	 * @Date 2018/8/31 17:26
	 * 校验主sku
	 */
    String selectProductsFlagByMainSKU(String mainSKU);

    /**
     * @Author lcx
     * @Date 2018/9/8 10:05
	 * 更具mainsku查询查询商品信息
     */
	Products selectProductsByMainSKU(String mainSKU);

	/**
	 * @Author lcx
	 * @Date 2018/9/15 15:39
	 * 根据 sku 修改 库存信息
	 * mainSku 集合
	 * num 对应的 修改数量
	 * type 修改的数据库字段
	 *
	 *      PurchaseQuantity  '采购数量',
			SubmitQuantity     '确认数量',
			SoldQuantity    '售出数量',
			RefundQuantity   '退货数量',
			RefundPutInQuantity   '退货入库量',
			RefundLossQuantity   '退货损耗量',
			FbsIntoQuantity   'FBS转入',
			FbsRefundPutInQuantity   'FBS退回入库量',
			FbsRefundLossQuantity   'FBS退回损耗量',
			ChinaStorageLossQuantity   '国内仓损耗量',
			OverseasStorageLossQuantity   '海外仓损耗量',

	 */
	public List<Integer> uploadProductAsMainSkuAndType(List<String> mainSkuList, List<Integer> numList, String type);

	/**
	 * @Author lcx
	 * @Date 2018/9/15 15:39
	 * 根据 sku 修改 库存信息
	 * mainSku 集合
	 * num 对应的 修改数量
	 * type 修改的数据库字段
	 *
	 *      PurchaseQuantity  '采购数量',
	SubmitQuantity     '确认数量',
	SoldQuantity    '售出数量',
	RefundQuantity   '退货数量',
	RefundPutInQuantity   '退货入库量',
	RefundLossQuantity   '退货损耗量',
	FbsIntoQuantity   'FBS转入',
	FbsRefundPutInQuantity   'FBS退回入库量',
	FbsRefundLossQuantity   'FBS退回损耗量',
	ChinaStorageLossQuantity   '国内仓损耗量',
	OverseasStorageLossQuantity   '海外仓损耗量',
	ShareQuantity 盘点数量

	 */
	public int uploadProductAsidAndType(String id, Integer num, String type);

	/**
	 * @Author lcx
	 * @Date 2018/9/8 10:05
	 * 计算合计
	 */
	List<Products> selectSumCountProductsList(Products products);

	/**
	 * @Author lcx
	 * @Date 2018/10/12 11:05
	 * 扫码发货校验接口
	 */
    List<String> updateProductsAsSweepCodeStockTaking(String[] stockIds);
}
